/**
 *
    算法描述：
        分类讨论：可能碰见的字母有：b o y g i r l
        如果碰到了boy任意一个，男生加加；同理girl女生加加
        但是碰到boy bo oy都只会加一次；同理， girl gir irl gi ir rl 都只能加一次
        因此可以理解成挪动指针的做法

        P.S.处理这7个字母，由于在处理girl和gir和gi都有类似的操作，考虑可以通过递归的方式去简化这个思路

            
    解决所需数据结构+算法：
**/
#include<iostream>
using namespace std;

int main() {
    int bc = 0, gc = 0;
    string s;
    cin >> s;
    int len = s.length();

    for(int i=0; i<len; i++) { // i为指针进行遍历
        // 分类情况过多，考虑通过switch实现
        switch (s[i]) {
        case 'y':
            bc++;
            break;
        case 'l':
            gc++;
            break;
        case 'b': // 对后续可能的 bo boy 进行讨论
            bc++;
            if(i<len+1 && s[i+1]=='o') {
                if(i<len+2 && s[i+2]=='y')  i += 2;
                else i += 1;
            }
            break;
        case 'o': // oy
            bc++;
            if(i<len+1 && s[i+1]=='y')  i += 1;
            break;
        case 'g': // girl  gir  gi
            gc++;
            if(i<len+1 && s[i+1]=='i') {
                if(i<len+2 && s[i+2]=='r') {
                    if(i<len+3 && s[i+3]=='l')  i += 3;
                    else i += 2;
                } else i += 1;
            }
            break;
        case 'i': // irl  ir
            gc++;
            if(i<len+1 && s[i+1]=='r') {
                if(i<len+2 && s[i+2]=='l') i += 2;
                else i += 1;
            }
            break;
        case 'r': // rl
            gc++;
            if(i<len+1 && s[i+1]=='l')  i += 1;
            break;
        
        default:
            break;
        }
    }

    cout << bc << endl << gc << endl;
    return 0;
}